import type { PageReq, PageRes } from '../common/commonApi'
import { useApi } from '@/composables/useApi'

export const FileStoreTypes = [
  { label: '本地', value: 'LOCAL', tagType: 'primary' },
  { label: 'S3协议', value: 'S3', tagColor: 'green' },
] as const
export type FileStoreType = typeof FileStoreTypes[number]['value']

/**
 * 系统文件
 */
export interface SysFile {
  /** 主键 */
  id?: number
  /** 文件分组 */
  fileGroup?: string
  /** 文件名称 */
  fileName?: string
  /** 文件路径 */
  filePath: string
  /** 文件大小 */
  fileSize: number
  /** 内容类型 */
  contentType: string
  /** 文件URL */
  fileMd5: string
  /** 文件URL */
  fileUrl: string
  /** 最近更新事件 */
  updateTime?: string
}

/**
 * 系统文件查询参数
 */
export interface SysFileQuery extends PageReq {
  /** 主键 */
  id?: number
  /** 文件分组 */
  fileGroup?: string
  /** 文件名称 */
  fileName?: string
  /** 文件存储类型 */
  storeType?: FileStoreType
  /** 内容类型 */
  contentType?: string
  /** 文件URL */
  fileMd5?: string
}

const basePath = '/system/file'
export const sysFileApi = {
  queryPage: useApi<SysFileQuery, PageRes<SysFile>>(`${basePath}/page`).get,
  findDetail: async (id: number) => useApi<any, SysFile>(`${basePath}/${id}`).get(),
  remove: async (id: number) => useApi<null, SysFile>(`${basePath}/${id}`).remove(),
  download: async (id: number) => useApi<null, SysFile>(`${basePath}/download/${id}`).download(),
}
